Harden Windows PowerShell compatibility - #17
Conversation
BeLazy167
left a comment
There was a problem hiding this comment.
0 blocking · 3 important · 2 suggestions
The PowerShell 5.1 compatibility fixes are sound. Request handling and proxy upgrade behavior still need changes.
| - name: "claude-opus-5" | ||
| - name: "claude-sonnet-4-6" | ||
| params: | ||
| - "thinking" |
There was a problem hiding this comment.
This removes valid adaptive thinking and output_config.effort fields from every request to these models. Current Claude clients already send that shape, so the proxy silently disables requested reasoning even though only legacy thinking.type: enabled is incompatible.
Keep adaptive requests unchanged. If compatibility handling is still needed, transform or remove only the legacy enabled shape. Do not delete output_config unconditionally.
| $reply = (Read-Host "$Question $hint").Trim().ToLower() | ||
| $reply = Read-Host "$Question $hint" | ||
| # Redirected or exhausted stdin makes Read-Host return null in Windows | ||
| # PowerShell 5.1. Treat it like an empty answer rather than aborting a |
There was a problem hiding this comment.
Redirected or exhausted input is not an affirmative answer. Converting $null to an empty string makes every default-y prompt succeed, including organization confirmation and setup changes.
Fail closed when Read-Host returns $null. Apply the default only when an interactive caller explicitly submits an empty line.
| $yaml += " - name: `"$gm`"" | ||
| $yaml += " alias: `"$gm`"" | ||
| } | ||
| $yaml += 'payload:' |
There was a problem hiding this comment.
This template now depends on payload.filter, but the Windows installer reuses any existing cliproxyapi.exe without checking that capability. An upgrade can therefore commit this profile while an older proxy ignores or rejects the new field, leaving the original model failures in place.
Feature-detect payload filtering or enforce a supported proxy version. Replace the existing binary before committing the profile when it lacks support.
|
|
||
| Claude Code sends adaptive thinking, display policy, and effort for current | ||
| Opus models. | ||
| Claude Code currently sends fixed-budget thinking for qBraid's custom Opus 4.8, |
There was a problem hiding this comment.
This says Claude Code sends fixed-budget thinking and that these requests run without extended thinking. Supported clients also send adaptive thinking with output_config.effort, and the later claim that requests pass through unchanged conflicts with this filter.
Document the actual conditional behavior after fixing the request handling. Avoid describing all requests as fixed-budget or unchanged.
| ! grep -q 'key-alpha\|key-beta' "$HOME_ROOT/.claude/settings.json"; then | ||
| ok 'unsafe legacy plain-Claude credentials are removed' | ||
| else bad 'plain Claude credential cleanup'; fi | ||
| if grep -q 'name: "claude-opus-4-8"' "$BETA_DIR/proxy-template.yaml" && |
There was a problem hiding this comment.
These independent greps pass when the YAML is misnested or when a broader filter also strips thinking from untargeted models.
Parse the generated YAML or run it through the proxy. Assert one targeted model changes while Haiku and GPT requests keep their thinking fields.
|
[GPT-5.6-sol] RESPONDING ON BEHALF OF BeLazy167 Closing as superseded by #18. That PR includes the PowerShell 5.1 ordering, native-process handling, encoding, migration, and native Windows lifecycle coverage from this change. The remaining adaptive-thinking filter should not merge. It removes valid adaptive |
Summary
Validation
shellcheck -S warning install.sh qbraid-code statusline.sh tests/*.shtests/*.sh: 137 assertions passedupgradepolicy moved 2.1.179 to stable 2.1.228 and completed a gateway requestBrowser-backed MCP OAuth remains a separate manual check; MCP registration and compatibility fallbacks are covered.